//
// Created by mongobaba on 2021/6/7.
//

#include "unit_test.h"
#include "json_validator.h"

// 特殊情况
TEST(parse_array_empty) {
    json_validator validator("");
    ASSERT_EQ(false, validator.parse_array());
    ASSERT_EQ(std::string(""), validator.left());
}

// 正常情况，内容为空
TEST(parse_array_no_content) {
    json_validator validator("[ ]x");
    ASSERT_EQ(true, validator.parse_array());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 正常情况，内容不为空
TEST(parse_array_has_content) {
    json_validator validator("[ 1, 2 , 3 ]x");
    ASSERT_EQ(true, validator.parse_array());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 错误情况
TEST(parse_array_false) {
    json_validator validator("[ 1, 2 ,  ]x");
    ASSERT_EQ(false, validator.parse_array());
    ASSERT_EQ(std::string("]x"), validator.left());
}

// 错误情况，访问越界
TEST(parse_array_out_of_range) {
    json_validator validator("[");
    try {
        ASSERT_EQ(false, validator.parse_array());
        ASSERT_EQ(std::string(""), validator.left());
    } catch (std::out_of_range&) {
        ASSERT_EQ(false, true);
    }
}
